home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / misc / volume25 / tcl / part32 < prev    next >
Encoding:
Text File  |  1991-11-15  |  43.6 KB  |  1,026 lines

  1. Newsgroups: comp.sources.misc
  2. From: karl@sugar.neosoft.com (Karl Lehenbauer)
  3. Subject:  v25i100:  tcl - tool command language, version 6.1, Part32/33
  4. Message-ID: <1991Nov15.230132.22421@sparky.imd.sterling.com>
  5. X-Md4-Signature: 73264eab3c3709eaf41f45e569626c29
  6. Date: Fri, 15 Nov 1991 23:01:32 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: karl@sugar.neosoft.com (Karl Lehenbauer)
  10. Posting-number: Volume 25, Issue 100
  11. Archive-name: tcl/part32
  12. Environment: UNIX
  13.  
  14. #! /bin/sh
  15. # This is a shell archive.  Remove anything before this line, then unpack
  16. # it by saving it into a file and typing "sh file".  To overwrite existing
  17. # files, type "sh file -c".  You can also feed this as standard input via
  18. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  19. # will see the following message at the end:
  20. #        "End of archive 32 (of 33)."
  21. # Contents:  tcl6.1/doc/Tcl.man.3
  22. # Wrapped by karl@one on Tue Nov 12 19:44:33 1991
  23. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  24. if test -f 'tcl6.1/doc/Tcl.man.3' -a "${1}" != "-c" ; then 
  25.   echo shar: Will not clobber existing file \"'tcl6.1/doc/Tcl.man.3'\"
  26. else
  27. echo shar: Extracting \"'tcl6.1/doc/Tcl.man.3'\" \(41512 characters\)
  28. sed "s/^X//" >'tcl6.1/doc/Tcl.man.3' <<'END_OF_FILE'
  29. X.TP
  30. X\fBinfo vars\fR ?\fIpattern\fR?
  31. XIf \fIpattern\fR isn't specified,
  32. Xreturns a list of all the names of currently-visible variables, including
  33. Xboth locals and currently-visible globals.
  34. XIf \fIpattern\fR is specified, only those names matching \fIpattern\fR
  35. Xare returned.  Matching is determined using the same rules as for
  36. X\fBstring match\fR.
  37. X.RE
  38. X.TP
  39. X\fBjoin \fIlist \fR?\fIjoinString\fR?
  40. X.VS
  41. XThe \fIlist\fR argument must be a valid Tcl list.
  42. XThis command returns the string
  43. Xformed by joining all of the elements of \fIlist\fR together with
  44. X\fIjoinString\fR separating each adjacent pair of elements.
  45. XThe \fIjoinString\fR argument defaults to a space character.
  46. X.VE
  47. X.TP
  48. X\fBlappend \fIvarName value \fR?\fIvalue value ...\fR?
  49. X.VS
  50. XTreat the variable given by \fIvarName\fR as a list and append
  51. Xeach of the \fIvalue\fR arguments to that list as a separate
  52. Xelement, with spaces between elements.
  53. XIf \fIvarName\fR doesn't exist, it is created as a list with elements
  54. Xgiven by the \fIvalue\fR arguments.
  55. X\fBLappend\fR is similar to \fBappend\fR except that the \fIvalue\fRs
  56. Xare appended as list elements rather than raw text.
  57. XThis command provides a relatively efficient way to build up
  58. Xlarge lists.  For example, ``\fBlappend a $b\fR'' is much
  59. Xmore efficient than ``\fBset a [concat $a [list $b]]\fR'' when
  60. X\fB$a\fR is long.
  61. X.TP
  62. X\fBlindex \fIlist index\fR
  63. XTreats \fIlist\fR as a Tcl list and returns the \fIindex\fR'th element
  64. Xfrom it (0 refers to the first element of the list).
  65. XIn extracting the element, \fIlindex\fR observes the same rules
  66. Xconcerning braces and quotes and backslashes as the Tcl command
  67. Xinterpreter; however, variable
  68. Xsubstitution and command substitution do not occur.
  69. XIf \fIindex\fR is negative or greater than or equal to the number
  70. Xof elements in \fIvalue\fR, then an empty
  71. Xstring is returned.
  72. X.TP
  73. X\fBlinsert \fIlist index element \fR?\fIelement element ...\fR?
  74. XThis command produces a new list from \fIlist\fR by inserting all
  75. Xof the \fIelement\fR arguments just before the \fIindex\fRth
  76. Xelement of \fIlist\fR.  Each \fIelement\fR argument will become
  77. Xa separate element of the new list.  If \fIindex\fR is less than
  78. Xor equal to zero, then the new elements are inserted at the
  79. Xbeginning of the list.  If \fIindex\fR is greater than or equal
  80. Xto the number of elements in the list, then the new elements are
  81. Xappended to the list.
  82. X.VE
  83. X.TP
  84. X\fBlist \fIarg \fR?\fIarg ...\fR?
  85. XThis command returns a list comprised of all the \fIarg\fRs.  Braces
  86. Xand backslashes get added as necessary, so that the \fBindex\fR command
  87. Xmay be used on the result to re-extract the original arguments, and also
  88. Xso that \fBeval\fR may be used to execute the resulting list, with
  89. X\fIarg1\fR comprising the command's name and the other \fIarg\fRs comprising
  90. Xits arguments.  \fBList\fR produces slightly different results than
  91. X\fBconcat\fR:  \fBconcat\fR removes one level of grouping before forming
  92. Xthe list, while \fBlist\fR works directly from the original arguments.
  93. XFor example, the command
  94. X.RS
  95. X.DS
  96. X\fBlist a b {c d e} {f {g h}}
  97. X.DE
  98. Xwill return
  99. X.DS
  100. X\fBa b {c d e} {f {g h}}
  101. X.DE
  102. Xwhile \fBconcat\fR with the same arguments will return
  103. X.DS
  104. X\fBa b c d e f {g h}\fR
  105. X.DE
  106. X.RE
  107. X.br
  108. X.VS
  109. X.TP
  110. X\fBllength \fIlist\fR
  111. XTreats \fIlist\fR as a list and returns a decimal string giving
  112. Xthe number of elements in it.
  113. X.TP
  114. X\fBlrange \fIlist first last
  115. X\fIList\fR must be a valid Tcl list.  This command will
  116. Xreturn a new list consisting of elements
  117. X\fIfirst\fR through \fIlast\fR, inclusive.
  118. X\fILast\fR may be \fBend\fR (or any
  119. Xabbreviation of it) to refer to the last element of the list.
  120. XIf \fIfirst\fR is less than zero, it is treated as if it were zero.
  121. XIf \fIlast\fR is greater than or equal to the number of elements
  122. Xin the list, then it is treated as if it were \fBend\fR.
  123. XIf \fIfirst\fR is greater than \fIlast\fR then an empty string
  124. Xis returned.
  125. XNote: ``\fBlrange \fIlist first first\fR'' does not always produce the
  126. Xsame result as ``\fBlindex \fIlist first\fR'' (although it often does
  127. Xfor simple fields that aren't enclosed in braces); it does, however,
  128. Xproduce exactly the same results as ``\fBlist [lindex \fIlist first\fB]\fR''
  129. X.TP
  130. X\fBlreplace \fIlist first last \fR?\fIelement element ...\fR?
  131. XReturns a new list formed by replacing one or more elements of
  132. X\fIlist\fR with the \fIelement\fR arguments.
  133. X\fIFirst\fR gives the index in \fIlist\fR of the first element
  134. Xto be replaced.
  135. XIf \fIfirst\fR is less than zero then it refers to the first
  136. Xelement of \fIlist\fR;  the element indicated by \fIfirst\fR
  137. Xmust exist in the list.
  138. X\fILast\fR gives the index in \fIlist\fR of the last element
  139. Xto be replaced;  it must be greater than or equal to \fIfirst\fR.
  140. X\fILast\fR may be \fBend\fR (or any abbreviation of it) to indicate
  141. Xthat all elements between \fIfirst\fR and the end of the list should
  142. Xbe replaced.
  143. XThe \fIelement\fR arguments specify zero or more new arguments to
  144. Xbe added to the list in place of those that were deleted.
  145. XEach \fIelement\fR argument will become a separate element of
  146. Xthe list.
  147. XIf no \fIelement\fR arguments are specified, then the elements
  148. Xbetween \fIfirst\fR and \fIlast\fR are simply deleted.
  149. X.TP
  150. X\fBlsearch \fIlist pattern\fR
  151. XSearch the elements of \fIlist\fR to see if one of them matches
  152. X\fIpattern\fR.
  153. XIf so, the command returns the index of the first matching
  154. Xelement.
  155. XIf not, the command returns \fB\-1\fR.
  156. XPattern matching is done in the same way as for the \fBstring match\fR
  157. Xcommand.
  158. X.TP
  159. X\fBlsort \fIlist\fR
  160. XSort the elements of \fIlist\fR, returning a new list in sorted
  161. Xorder.
  162. XASCII sorting is used, with the result in increasing order.
  163. X.VE
  164. X.TP
  165. X\fBopen \fIfileName\fR ?\fIaccess\fR?
  166. X.VS
  167. XOpens a file and returns an identifier
  168. Xthat may be used in future invocations
  169. Xof commands like \fBread\fR, \fBwrite\fR, and \fBclose\fR.
  170. X\fIFileName\fR gives the name of the file to open; if it starts with
  171. Xa tilde then tilde substitution is performed as described for
  172. X\fBTcl_TildeSubst\fR.
  173. XIf the first character of \fIfileName\fR is ``|'' then the
  174. Xremaining characters of \fIfileName\fR are treated as a command
  175. Xpipeline to invoke, in the same style as for \fBexec\fR.
  176. XIn this case, the identifier returned by \fBopen\fR may be used
  177. Xto write to the command's input pipe or read from its output pipe.
  178. XThe \fIaccess\fR argument indicates the way in which the file
  179. X(or command pipeline) is to be accessed.
  180. XIt may have any of the following values:
  181. X.RS
  182. X.TP
  183. X\fBr\fR
  184. XOpen the file for reading only; the file must already exist.
  185. X.TP
  186. X\fBr+\fR
  187. XOpen the file for both reading and writing; the file must
  188. Xalready exist.
  189. X.TP
  190. X\fBw\fR
  191. XOpen the file for writing only.  Truncate it if it exists.  If it doesn't
  192. Xexist, create a new file.
  193. X.TP
  194. X\fBw+\fR
  195. XOpen the file for reading and writing.  Truncate it if it exists.
  196. XIf it doesn't exist, create a new file.
  197. X.TP
  198. X\fBa\fR
  199. XOpen the file for writing only.  The file must already exist, and the file
  200. Xis positioned so that new data is appended to the file.
  201. X.TP
  202. X\fBa+\fR
  203. XOpen the file for reading and writing.  The file must already exist, and
  204. Xthe initial access position is set to the end of the file.
  205. X.PP
  206. X\fIAccess\fR defaults to \fBr\fR.
  207. XIf a file is opened for both reading and writing, then \fBseek\fR
  208. Xmust be invoked between a read and a write, or vice versa (this
  209. Xrestriction does not apply to command pipelines opened with \fBopen\fR).
  210. XWhen \fIfileName\fR specifies a command pipeline and a write-only access
  211. Xis used, then standard output from the pipeline is directed to the
  212. Xcurrent standard output unless overridden by the command.
  213. XWhen \fIfileName\fR specifies a command pipeline and a read-only access
  214. Xis used, then standard input from the pipeline is taken from the
  215. Xcurrent standard input unless overridden by the command.
  216. X.RE
  217. X.VE
  218. X.TP
  219. X\fBproc \fIname args body\fR
  220. XThe \fBproc\fR command creates a new Tcl command procedure,
  221. X\fIname\fR, replacing
  222. Xany existing command there may have been by that name.  Whenever the
  223. Xnew command is invoked, the contents of \fIbody\fR will be executed
  224. Xby the Tcl interpreter.  \fIArgs\fR specifies the formal arguments to the
  225. Xprocedure.  It consists of a list, possibly empty, each of whose
  226. Xelements specifies
  227. Xone argument.  Each argument specifier is also a list with either
  228. Xone or two fields.  If there is only a single field in the specifier,
  229. Xthen it is the name of the argument; if there are two fields, then
  230. Xthe first is the argument name and the second is its default value.
  231. Xbraces and backslashes may be used in the usual way to specify
  232. Xcomplex default values.
  233. X.IP
  234. XWhen \fIname\fR is invoked, a local variable
  235. Xwill be created for each of the formal arguments to the procedure; its
  236. Xvalue will be the value of corresponding argument in the invoking command
  237. Xor the argument's default value.
  238. XArguments with default values need not be
  239. Xspecified in a procedure invocation.  However, there must be enough
  240. Xactual arguments for all the
  241. Xformal arguments that don't have defaults, and there must not be any extra
  242. Xactual arguments.  There is one special case to permit procedures with
  243. Xvariable numbers of arguments.  If the last formal argument has the name
  244. X\fBargs\fR, then a call to the procedure may contain more actual arguments
  245. Xthan the procedure has formals.  In this case, all of the actual arguments
  246. Xstarting at the one that would be assigned to \fBargs\fR are combined into
  247. Xa list (as if the \fBlist\fR command had been used); this combined value
  248. Xis assigned to the local variable \fBargs\fR.
  249. X.IP
  250. XWhen \fIbody\fR is being executed, variable names normally refer to
  251. Xlocal variables, which are created automatically when referenced and
  252. Xdeleted when the procedure returns.  One local variable is automatically
  253. Xcreated for each of the procedure's arguments.
  254. XGlobal variables can only be accessed by invoking
  255. Xthe \fBglobal\fR command.
  256. X.IP
  257. XThe \fBproc\fR command returns the null string.  When a procedure is
  258. Xinvoked, the procedure's return value is the value specified in a
  259. X\fBreturn\fR command.  If the procedure doesn't execute an explicit
  260. X\fBreturn\fR, then its return value is the value of the last command
  261. Xexecuted in the procedure's body.
  262. XIf an error occurs while executing the procedure
  263. Xbody, then the procedure-as-a-whole will return that same error.
  264. X.TP
  265. X\fBputs \fIfileId string \fR?\fBnonewline\fR?
  266. X.VS
  267. XWrites the characters given by \fIstring\fR to the file given
  268. Xby \fIfileId\fR.
  269. X\fBPuts\fR normally outputs a newline character after \fIstring\fR,
  270. Xbut this feature may be suppressed by specifying the \fBnonewline\fR
  271. Xargument.
  272. XOutput to files is buffered internally by Tcl; the \fBflush\fR
  273. Xcommand may be used to force buffered characters to be output.
  274. X\fIFileId\fR must have been the return
  275. Xvalue from a previous call to \fBopen\fR, or it may be
  276. X\fBstdout\fR or \fBstderr\fR to refer to one of the standard I/O
  277. Xchannels; it must refer to a file that was opened for
  278. Xwriting.
  279. X.TP
  280. X\fBpwd\fR
  281. X.br
  282. XReturns the path name of the current working directory.
  283. X.TP
  284. X\fBread \fIfileId\fR
  285. X.TP
  286. X\fBread \fIfileId \fBnonewline\fR
  287. X.TP
  288. X\fBread \fIfileId numBytes\fR
  289. XIn the first form, all of the remaining bytes are read from the file
  290. Xgiven by \fIfileId\fR; they are returned as the result of the command.
  291. XIf \fBnonewline\fR is specified as an additional argument, then the last
  292. Xcharacter of the file is discarded if it is a newline.
  293. XIn the third form, the extra argument specifies how many bytes to read;
  294. Xexactly this many bytes will be read and returned, unless there are fewer than
  295. X\fInumBytes\fR bytes left in the file; in this case, all the remaining
  296. Xbytes are returned.
  297. X\fIFileId\fR must be \fBstdin\fR or the return
  298. Xvalue from a previous call to \fBopen\fR; it must
  299. Xrefer to a file that was opened for reading.
  300. X.TP
  301. X\fBregexp \fR?\fB\-indices\fR? \fR?\fB\-nocase\fR? \fIexp string \fR?\fImatchVar\fR? ?\fIsubMatchVar subMatchVar ...\fR?
  302. XDetermines whether the regular expression \fIexp\fR matches part or
  303. Xall of \fIstring\fR and returns 1 if it does, 0 if it doesn't.
  304. XSee REGULAR EXPRESSIONS above for complete information on the
  305. Xsyntax of \fIexp\fR and how it is matched against \fIstring\fR.
  306. X.RS
  307. X.LP
  308. XIf the \fB\-nocase\fR switch is specified then upper-case
  309. Xcharacters in \fIstring\fR
  310. Xare treated as lower case during the matching process.
  311. XThe \fB\-nocase\fR switch must be specified before \fIexp\fR and
  312. Xmay not be abbreviated.
  313. X.LP
  314. XIf additional arguments are specified after \fIstring\fR then they
  315. Xare treated as the names of variables to use to return
  316. Xinformation about which part(s) of \fIstring\fR matched \fIexp\fR.
  317. X\fIMatchVar\fR will be set to the range of \fIstring\fR that
  318. Xmatched all of \fIexp\fR.  The first \fIsubMatchVar\fR will contain
  319. Xthe characters in \fIstring\fR that matched the leftmost parenthesized
  320. Xsubexpression within \fIexp\fR, the next \fIsubMatchVar\fR will
  321. Xcontain the characters that matched the next parenthesized
  322. Xsubexpression to the right in \fIexp\fR, and so on.
  323. X.LP
  324. XNormally, \fImatchVar\fR and the \fIsubMatchVar\fRs are set to hold
  325. Xthe matching characters from \fBstring\fR.
  326. XHowever, if the \fB\-indices\fR switch is specified then each variable
  327. Xwill contain a list of two decimal strings giving the indices
  328. Xin \fIstring\fR of the first and last characters in the matching
  329. Xrange of characters.
  330. XThe \fB\-indices\fR switch must be specified before the \fIexp\fR
  331. Xargument and may not be abbreviated.
  332. X.LP
  333. XIf there are more more \fIsubMatchVar\fR's than parenthesized
  334. Xsubexpressions within \fIexp\fR, or if a particular subexpression
  335. Xin \fIexp\fR doesn't match the string (e.g. because it was in a
  336. Xportion of the expression that wasn't matched), then the corresponding
  337. X\fIsubMatchVar\fR will be set to ``\fB\-1 \-1\fR'' if \fB\-indices\fR
  338. Xhas been specified or to an empty string otherwise.
  339. X.RE
  340. X.TP
  341. X\fBregsub \fR?\fB\-all\fR? ?\fB\-nocase\fR? \fIexp string subSpec varName\fR
  342. XThis command matches the regular expression \fIexp\fR against
  343. X\fIstring\fR using the rules described in REGULAR EXPRESSIONS
  344. Xabove.
  345. XIf there is no match, then the command returns 0 and does nothing
  346. Xelse.
  347. XIf there is a match, then the command returns 1 and also copies
  348. X\fIstring\fR to the variable whose name is given by \fIvarName\fR.
  349. XWhen copying \fIstring\fR, the portion of \fIstring\fR that
  350. Xmatched \fIexp\fR is replaced with \fIsubSpec\fR.
  351. XIf \fIsubSpec\fR contains a ``&'' or ``\e0'', then it is replaced
  352. Xin the substitution with the portion of \fIstring\fR that
  353. Xmatched \fIexp\fR.
  354. XIf \fIsubSpec\fR contains a ``\e\fIn\fR'', where \fIn\fR is a digit
  355. Xbetween 1 and 9, then it is replaced in the substitution with
  356. Xthe portion of \fIstring\fR that matched the \fIn\fR-th
  357. Xparenthesized subexpression of \fIexp\fR.
  358. XAdditional backslashes may be used in \fIsubSpec\fR to prevent special
  359. Xinterpretation of ``&'' or ``\e0'' or ``\e\fIn\fR'' or
  360. Xbackslash.
  361. XThe use of backslashes in \fIsubSpec\fR tends to interact badly
  362. Xwith the Tcl parser's use of backslashes, so it's generally
  363. Xsafest to enclose \fIsubSpec\fR in braces if it includes
  364. Xbackslashes.
  365. XIf the \fB\-all\fR argument is specified, then all ranges in
  366. X\fIstring\fR that match \fIexp\fR are found and substitution is
  367. Xperformed for each of these ranges;  otherwise only the first
  368. Xmatching range is found and substituted.
  369. XIf \fB\-all\fR is specified, then ``&'' and ``\e\fIn\fR''
  370. Xsequences are handled for each substitution using the information
  371. Xfrom the corresponding match.
  372. XIf the \fB\-nocase\fR argument is specified, then upper-case
  373. Xcharacters in \fIstring\fR are converted to lower-case before
  374. Xmatching against \fIexp\fR;  however, substitutions specified
  375. Xby \fIsubSpec\fR use the original unconverted form of \fIstring\fR.
  376. XThe \fB\-all\fR and \fB\-nocase\fR arguments must be specified
  377. Xexactly:  no abbreviations are permitted.
  378. X.VE
  379. X.TP
  380. X\fBrename \fIoldName newName\fR
  381. XRename the command that used to be called \fIoldName\fR so that it
  382. Xis now called \fInewName\fR.  If \fInewName\fR is an empty string
  383. X(e.g. {}) then \fIoldName\fR is deleted.  The \fBrename\fR command
  384. Xreturns an empty string as result.
  385. X.TP
  386. X\fBreturn \fR?\fIvalue\fR?
  387. XReturn immediately from the current procedure
  388. X(or top-level command or \fBsource\fR command),
  389. Xwith \fIvalue\fR as the return value.  If \fIvalue\fR is not specified,
  390. Xan empty string will be returned as result.
  391. X.TP
  392. X\fBscan \fIstring format varname1 \fR?\fIvarname2 ...\fR?
  393. XThis command parses fields from an input string in the same fashion
  394. Xas the C \fBsscanf\fR procedure.  \fIString\fR gives the input to
  395. Xbe parsed and \fIformat\fR indicates how to parse it, using \fB%\fR
  396. Xfields as in \fBsscanf\fR.  All of the \fBsscanf\fR options are valid;
  397. Xsee the \fBsscanf\fR man page for details.  Each \fIvarname\fR gives
  398. Xthe name of a variable; when a field is scanned from \fIstring\fR,
  399. Xthe result is converted back into a string and assigned to the
  400. Xcorresponding \fIvarname\fR.  The only unusual conversion is for
  401. X\fB%c\fR.  For \fB%c\fR conversions a single character value is
  402. Xconverted to a decimal string, which is then assigned to the
  403. Xcorresponding \fIvarname\fR;
  404. X.VS
  405. Xno field width may be specified for this conversion.
  406. X.TP
  407. X\fBseek \fIfileId offset \fR?\fIorigin\fR?
  408. XChange the current access position for \fIfileId\fR.
  409. XThe \fIoffset\fR and \fIorigin\fR arguments specify the position at
  410. Xwhich the next read or write will occur for \fIfileId\fR.
  411. X\fIOffset\fR must be a number (which may be negative) and \fIorigin\fR
  412. Xmust be one of the following:
  413. X.RS
  414. X.TP
  415. X\fBstart\fR
  416. XThe new access position will be \fIorigin\fR bytes from the start
  417. Xof the file.
  418. X.TP
  419. X\fBcurrent\fR
  420. XThe new access position will be \fIorigin\fR bytes from the current
  421. Xaccess position; a negative \fIorigin\fR moves the access position
  422. Xbackwards in the file.
  423. X.TP
  424. X\fBend\fR
  425. XThe new access position will be \fIorigin\fR bytes from the end of
  426. Xthe file.  A negative \fIorigin\fR places the access position before
  427. Xthe end-of-file, and a positive \fIorigin\fR places the access position
  428. Xafter the end-of-file.
  429. X.LP
  430. XThe \fIorigin\fR argument defaults to \fBstart\fR.
  431. X\fIFileId\fR must have been the return
  432. Xvalue from a previous call to \fBopen\fR, or it may be \fBstdin\fR,
  433. X\fBstdout\fR, or \fBstderr\fR to refer to one of the standard I/O
  434. Xchannels.
  435. XThis command returns an empty string.
  436. X.RE
  437. X.VE
  438. X.TP
  439. X\fBset \fIvarname \fR?\fIvalue\fR?
  440. XReturns the value of variable \fIvarname\fR.
  441. XIf \fIvalue\fR is specified, then set
  442. Xthe value of \fIvarname\fR to \fIvalue\fR, creating a new variable
  443. Xif one doesn't already exist, and return its value.
  444. X.VS
  445. XIf \fIvarName\fR contains an open parenthesis and ends with a
  446. Xclose parenthesis, then it refers to an array element:  the characters
  447. Xbefore the open parenthesis are the name of the array, and the characters
  448. Xbetween the parentheses are the index within the array.
  449. XOtherwise \fIvarName\fR refers to a scalar variable.
  450. X.VE
  451. XIf no procedure is active, then \fIvarname\fR refers to a global
  452. Xvariable.
  453. XIf a procedure is active, then \fIvarname\fR refers to a parameter
  454. Xor local variable of the procedure, unless the \fIglobal\fR command
  455. Xhas been invoked to declare \fIvarname\fR to be global.
  456. X.TP
  457. X\fBsource \fIfileName\fR
  458. XRead file \fIfileName\fR and pass the contents to the Tcl interpreter
  459. Xas a sequence of commands to execute in the normal fashion.  The return
  460. Xvalue of \fBsource\fR is the return value of the last command executed
  461. Xfrom the file.  If an error occurs in executing the contents of the
  462. Xfile, then the \fBsource\fR command will return that error.
  463. XIf a \fBreturn\fR command is invoked from within the file, the remainder of
  464. Xthe file will be skipped and the \fBsource\fR command will return
  465. Xnormally with the result from the \fBreturn\fR command.
  466. XIf \fIfileName\fR starts with a tilde, then it is tilde-substituted
  467. Xas described in the \fBTcl_TildeSubst\fR manual entry.
  468. X.TP
  469. X\fBsplit \fIstring \fR?\fIsplitChars\fR?
  470. XReturns a list created by splitting \fIstring\fR at each character
  471. Xthat is in the \fIsplitChars\fR argument.
  472. XEach element of the result list will consist of the
  473. Xcharacters from \fIstring\fR between instances of the
  474. Xcharacters in \fIsplitChars\fR.
  475. XEmpty list elements will be generated if \fIstring\fR contains
  476. Xadjacent characters in \fIsplitChars\fR, or if the first or last
  477. Xcharacter of \fIstring\fR is in \fIsplitChars\fR.
  478. XIf \fIsplitChars\fR is an empty string then each character of
  479. X\fIstring\fR becomes a separate element of the result list.
  480. X\fISplitChars\fR defaults to the standard white-space characters.
  481. XFor example,
  482. X.RS
  483. X.DS
  484. X\fBsplit "comp.unix.misc" .\fR
  485. X.DE
  486. Xreturns \fB"comp unix misc"\fR and
  487. X.DS
  488. X\fBsplit "Hello world" {}\fR
  489. X.DE
  490. Xreturns \fB"H e l l o { } w o r l d"\fR.
  491. X.VE
  492. X.RE
  493. X.TP
  494. X\fBstring \fIoption arg \fR?\fIarg ...?\fR
  495. XPerform one of several string operations, depending on \fIoption\fR.
  496. XThe legal \fIoption\fRs (which may be abbreviated) are:
  497. X.RS
  498. X.TP
  499. X\fBstring compare \fIstring1 string2\fR
  500. XPerform a character-by-character comparison of strings \fIstring1\fR and
  501. X\fIstring2\fR in the same way as the C \fBstrcmp\fR procedure.  Return
  502. X-1, 0, or 1, depending on whether \fIstring1\fR is lexicographically
  503. Xless than, equal to, or greater than \fIstring2\fR.
  504. X.TP
  505. X\fBstring first \fIstring1 string2\fR
  506. XSearch \fIstring2\fR for a sequence of characters that exactly match
  507. Xthe characters in \fIstring1\fR.  If found, return the index of the
  508. Xfirst character in the first such match within \fIstring2\fR.  If not
  509. Xfound, return -1.
  510. X.br
  511. X.VS
  512. X.TP
  513. X\fBstring index \fIstring charIndex\fR
  514. XReturns the \fIcharIndex\fR'th character of the \fIstring\fR
  515. Xargument.  A \fIcharIndex\fR of 0 corresponds to the first
  516. Xcharacter of the string.
  517. XIf \fIcharIndex\fR is less than 0 or greater than
  518. Xor equal to the length of the string then an empty string is
  519. Xreturned.
  520. X.VE
  521. X.TP
  522. X\fBstring last \fIstring1 string2\fR
  523. XSearch \fIstring2\fR for a sequence of characters that exactly match
  524. Xthe characters in \fIstring1\fR.  If found, return the index of the
  525. Xfirst character in the last such match within \fIstring2\fR.  If there
  526. Xis no match, then return \-1.
  527. X.br
  528. X.VS
  529. X.TP
  530. X\fBstring length \fIstring\fR
  531. XReturns a decimal string giving the number of characters in \fIstring\fR.
  532. X.VE
  533. X.TP
  534. X\fBstring match \fIpattern\fR \fIstring\fR
  535. XSee if \fIpattern\fR matches \fIstring\fR; return 1 if it does, 0
  536. Xif it doesn't.  Matching is done in a fashion similar to that
  537. Xused by the C-shell.  For the two strings to match, their contents
  538. Xmust be identical except that the following special sequences
  539. Xmay appear in \fIpattern\fR:
  540. X.RS
  541. X.IP \fB*\fR 10
  542. XMatches any sequence of characters in \fIstring\fR,
  543. Xincluding a null string.
  544. X.IP \fB?\fR 10
  545. XMatches any single character in \fIstring\fR.
  546. X.IP \fB[\fIchars\fB]\fR 10
  547. XMatches any character in the set given by \fIchars\fR.  If a sequence
  548. Xof the form
  549. X\fIx\fB\-\fIy\fR appears in \fIchars\fR, then any character
  550. Xbetween \fIx\fR and \fIy\fR, inclusive, will match.
  551. X.IP \fB\e\fIx\fR 10
  552. XMatches the single character \fIx\fR.  This provides a way of
  553. Xavoiding the special interpretation of the characters
  554. X\fB*?[]\e\fR in \fIpattern\fR.
  555. X.RE
  556. X.br
  557. X.VS
  558. X.TP
  559. X\fBstring range \fIstring first last\fR
  560. XReturns a range of consecutive characters from \fIstring\fR, starting
  561. Xwith the character whose index is \fIfirst\fR and ending with the
  562. Xcharacter whose index is \fIlast\fR.  An index of 0 refers to the
  563. Xfirst character of the string.  \fILast\fR may be \fBend\fR (or any
  564. Xabbreviation of it) to refer to the last character of the string.
  565. XIf \fIfirst\fR is less than zero then it is treated as if it were zero, and
  566. Xif \fIlast\fR is greater than or equal to the length of the string then
  567. Xit is treated as if it were \fBend\fR.  If \fIfirst\fR is greater than
  568. X\fIlast\fR then an empty string is returned.
  569. X.TP
  570. X\fBstring tolower \fIstring\fR
  571. XReturns a value equal to \fIstring\fR except that all upper case
  572. Xletters have been converted to lower case.
  573. X.TP
  574. X\fBstring toupper \fIstring\fR
  575. XReturns a value equal to \fIstring\fR except that all lower case
  576. Xletters have been converted to upper case.
  577. X.TP
  578. X\fBstring trim \fIstring\fR ?\fIchars\fR?
  579. XReturns a value equal to \fIstring\fR except that any leading
  580. Xor trailing characters from the set given by \fIchars\fR are
  581. Xremoved.
  582. XIf \fIchars\fR is not specified then white space is removed
  583. X(spaces, tabs, newlines, and carriage returns).
  584. X.TP
  585. X\fBstring trimleft \fIstring\fR ?\fIchars\fR?
  586. XReturns a value equal to \fIstring\fR except that any
  587. Xleading characters from the set given by \fIchars\fR are
  588. Xremoved.
  589. XIf \fIchars\fR is not specified then white space is removed
  590. X(spaces, tabs, newlines, and carriage returns).
  591. X.TP
  592. X\fBstring trimright \fIstring\fR ?\fIchars\fR?
  593. XReturns a value equal to \fIstring\fR except that any
  594. Xtrailing characters from the set given by \fIchars\fR are
  595. Xremoved.
  596. XIf \fIchars\fR is not specified then white space is removed
  597. X(spaces, tabs, newlines, and carriage returns).
  598. X.RE
  599. X.TP
  600. X\fBtell \fIfileId\fR
  601. XReturns a decimal string giving the current access position in
  602. X\fIfileId\fR.
  603. X\fIFileId\fR must have been the return
  604. Xvalue from a previous call to \fBopen\fR, or it may be \fBstdin\fR,
  605. X\fBstdout\fR, or \fBstderr\fR to refer to one of the standard I/O
  606. Xchannels.
  607. X.VE
  608. X.TP
  609. X\fBtime \fIcommand\fR ?\fIcount\fR?
  610. XThis command will call the Tcl interpreter \fIcount\fR
  611. Xtimes to execute \fIcommand\fR (or once if \fIcount\fR isn't
  612. Xspecified).  It will then return a string of the form
  613. X.RS
  614. X.DS
  615. X\fB503 microseconds per iteration\fR
  616. X.DE
  617. Xwhich indicates the average amount of time required per iteration,
  618. Xin microseconds.
  619. XTime is measured in elapsed time, not CPU time.
  620. X.RE
  621. X.TP
  622. X\fBtrace \fIoption\fR ?\fIarg arg ...\fR?
  623. X.VS
  624. XCause Tcl commands to be executed whenever certain operations are
  625. Xinvoked.  At present, only variable tracing is implemented. The
  626. Xlegal \fIoption\fR's (which may be abbreviated) are:
  627. X.RS
  628. X.TP
  629. X\fBtrace variable \fIname ops command\fR
  630. XArrange for \fIcommand\fR to be executed whenever variable \fIname\fR
  631. Xis accessed in one of the ways given by \fIops\fR.  \fIName\fR may
  632. Xrefer to a normal variable, an element of an array, or to an array
  633. Xas a whole (i.e. \fIname\fR may be just the name of an array, with no
  634. Xparenthesized index).  If \fIname\fR refers to a whole array, then
  635. X\fIcommand\fR is invoked whenever any element of the array is
  636. Xmanipulated.
  637. X.RS
  638. X.LP
  639. X\fIOps\fR indicates which operations are of interest, and consists of
  640. Xone or more of the following letters:
  641. X.RS
  642. X.TP
  643. X\fBr\fR
  644. XInvoke \fIcommand\fR whenever the variable is read.
  645. X.TP
  646. X\fBw\fR
  647. XInvoke \fIcommand\fR whenever the variable is written.
  648. X.TP
  649. X\fBu\fR
  650. XInvoke \fIcommand\fR whenever the variable is unset.  Variables
  651. Xcan be unset explicitly with the \fBunset\fR command, or
  652. Ximplicitly when procedures return (all of their local variables
  653. Xare unset).  Variables are also unset when interpreters are
  654. Xdeleted, but traces will not be invoked because there is no
  655. Xinterpreter in which to execute them.
  656. X.RE
  657. X.LP
  658. XWhen the trace triggers, three arguments are appended to
  659. X\fIcommand\fR so that the actual command is as follows:
  660. X.DS C
  661. X\fIcommand name1 name2 op\fR
  662. X.DE
  663. X\fIName1\fR and \fIname2\fR give the name(s) for the variable
  664. Xbeing accessed:  if the variable is a scalar then \fIname1\fR
  665. Xgives the variable's name and \fIname2\fR is an empty string;
  666. Xif the variable is an array element then \fIname1\fR gives the
  667. Xname of the array and name2 gives the index into the array;
  668. Xif an entire array is being deleted and the trace was registered
  669. Xon the overall array, rather than a single element, then \fIname1\fR
  670. Xgives the array name and \fIname2\fR is an empty string.
  671. X\fIOp\fR indicates what operation is being performed on the
  672. Xvariable, and is one of \fBr\fR, \fBw\fR, or \fBu\fR as
  673. Xdefined above.
  674. X.LP
  675. X\fICommand\fR executes in the same context as the code that invoked
  676. Xthe traced operation:  if the variable was accessed as part of a
  677. XTcl procedure, then \fIcommand\fR will have access to the same
  678. Xlocal variables as code in the procedure.  This context may be
  679. Xdifferent than the context in which the trace was created.
  680. XNote that \fIname1\fR may not necessarily be the same as the name
  681. Xused to set the trace on the variable;  differences can occur if
  682. Xthe access is made through a variable defined with the \fBupvar\fR
  683. Xcommand.
  684. X.LP
  685. XFor read and write traces, \fIcommand\fR can modify
  686. Xthe variable to affect the result of the traced operation.
  687. XIf \fIcommand\fR modifies the value of a variable during a
  688. Xread trace, then the value returned by the traced read operation
  689. Xwill be the value of the variable after \fIcommand\fR completes.
  690. XFor write traces, \fIcommand\fR is invoked after the variable's
  691. Xvalue has been changed; it can write a new value into the variable
  692. Xto override the original value specified in the write operation.
  693. XThe value returned by the traced write operation will be the
  694. Xvalue of the variable when \fIcommand\fR completes.
  695. XIf \fIcommand\fR returns an error during a read or write trace,
  696. Xthen the traced operation is aborted with an error.
  697. XThis mechanism can be used to implement read-only variables,
  698. Xfor example.
  699. X\fICommand\fR's result is always ignored.
  700. X.LP
  701. XWhile \fIcommand\fR is executing during a read or write trace, traces
  702. Xon the variable are temporarily disabled.
  703. XThis means that reads and writes invoked by
  704. X\fIcommand\fR will occur directly, without invoking \fIcommand\fR
  705. X(or any other traces) again.
  706. XIt is illegal to \fBunset\fR a variable while a trace
  707. Xis active for it.
  708. XIt is also illegal to \fBunset\fR an array if there are
  709. Xtraces active for any of the array's elements.
  710. X.LP
  711. XWhen an unset trace is invoked, the variable has already been
  712. Xdeleted:  it will appear to be undefined with no traces.
  713. XIf an unset occurs because of a procedure return, then the
  714. Xtrace will be invoked in the variable context of the procedure
  715. Xbeing returned to:  the stack frame of the returning procedure
  716. Xwill no longer exist.
  717. XTraces are not disabled during unset traces, so if an unset trace
  718. Xcommand creates a new trace and accesses the variable, the
  719. Xtrace will be invoked.
  720. X.LP
  721. XIf there are multiple traces on a variable they are invoked
  722. Xin order of creation, most-recent first.
  723. XIf one trace returns an error, then no further traces are
  724. Xinvoked for the variable.
  725. XIf an array element has a trace set, and there is also a trace
  726. Xset on the array as a whole, the trace on the overall array
  727. Xis invoked before the one on the element.
  728. X.LP
  729. XOnce created, the trace remains in effect either until the
  730. Xtrace is removed with the \fBtrace vdelete\fR command described
  731. Xbelow, until the variable is unset, or until the interpreter
  732. Xis deleted.
  733. XUnsetting an element of array will remove any traces on that
  734. Xelement, but will not remove traces on the overall array.
  735. X.LP
  736. XThis command returns an empty string.
  737. X.RE
  738. X.TP
  739. X\fBtrace vdelete \fIname ops command\fR
  740. XIf there is a trace set on variable \fIname\fR with the
  741. Xoperations and command given by \fIops\fR and \fIcommand\fR,
  742. Xthen the trace is removed, so that \fIcommand\fR will never
  743. Xagain be invoked.
  744. XReturns an empty string.
  745. X.TP
  746. X\fBtrace vinfo \fIname\fR
  747. XReturns a list containing one element for each trace
  748. Xcurrently set on variable \fIname\fR.
  749. XEach element of the list is itself a list containing two
  750. Xelements, which are the \fIops\fR and \fIcommand\fR associated
  751. Xwith the trace.
  752. XIf \fIname\fR doesn't exist or doesn't have any traces set, then
  753. Xthe result of the command will be an empty string.
  754. X.RE
  755. X.TP
  756. X\fBunknown \fIcmdName \fR?\fIarg arg ...\fR?
  757. XThis command doesn't actually exist as part of Tcl, but Tcl will
  758. Xinvoke it if it does exist.
  759. XIf the Tcl interpreter encounters a command name for which there
  760. Xis not a defined command, then Tcl checks for the existence of
  761. Xa command named \fBunknown\fR.
  762. XIf there is no such command, then the interpeter returns an
  763. Xerror.
  764. XIf the \fBunknown\fR command exists, then it is invoked with
  765. Xarguments consisting of the fully-substituted name and arguments
  766. Xfor the original non-existent command.
  767. XThe \fBunknown\fR command typically does things like searching
  768. Xthrough library directories for a command procedure with the name
  769. X\fIcmdName\fR, or expanding abbreviated command names to full-length,
  770. Xor automatically executing unknown commands as UNIX sub-processes.
  771. XIn some cases (such as expanding abbreviations) \fBunknown\fR will
  772. Xchange the original command slightly and then (re-)execute it.
  773. XThe result of the \fBunknown\fR command is used as the result for
  774. Xthe original non-existent command.
  775. X.TP
  776. X\fBunset \fIname \fR?\fIname name ...\fR?
  777. XRemove one or more variables.
  778. XEach \fIname\fR is a variable name, specified in any of the
  779. Xways acceptable to the \fBset\fR command.
  780. XIf a \fIname\fR refers to an element of an array, then that
  781. Xelement is removed without affecting the rest of the array.
  782. XIf a \fIname\fR consists of an array name with no parenthesized
  783. Xindex, then the entire array is deleted.
  784. XThe \fBunset\fR command returns an empty string as result.
  785. XAn error occurs if any of the variables doesn't exist, or if
  786. Xany of the variables has an active trace.
  787. X.VE
  788. X.TP
  789. X\fBuplevel \fR?\fIlevel\fR?\fI command \fR?\fIcommand ...\fR?
  790. XAll of the \fIcommand\fR arguments are concatenated as if they had
  791. Xbeen passed to \fBconcat\fR; the result is then evaluated in the
  792. Xvariable context indicated by \fIlevel\fR.  \fBUplevel\fR returns
  793. Xthe result of that evaluation.  If \fIlevel\fR is an integer, then
  794. Xit gives a distance (up the procedure calling stack) to move before
  795. Xexecuting the command.  If \fIlevel\fR consists of \fB#\fR followed by
  796. Xa number then the number gives an absolute level number.  If \fIlevel\fR
  797. Xis omitted then it defaults to \fB1\fR.  \fILevel\fR cannot be
  798. Xdefaulted if the first \fIcommand\fR argument starts with a digit or \fB#\fR.
  799. XFor example, suppose that procedure \fBa\fR was invoked
  800. Xfrom top-level, and that it called \fBb\fR, and that \fBb\fR called \fBc\fR.
  801. XSuppose that \fBc\fR invokes the \fBuplevel\fR command.  If \fIlevel\fR
  802. Xis \fB1\fR or \fB#2\fR  or omitted, then the command will be executed
  803. Xin the variable context of \fBb\fR.  If \fIlevel\fR is \fB2\fR or \fB#1\fR
  804. Xthen the command will be executed in the variable context of \fBa\fR.
  805. XIf \fIlevel\fR is \fB3\fR or \fB#0\fR then the command will be executed
  806. Xat top-level (only global variables will be visible).
  807. XThe \fBuplevel\fR command causes the invoking procedure to disappear
  808. Xfrom the procedure calling stack while the command is being executed.
  809. XIn the above example, suppose \fBc\fR invokes the command
  810. X.RS
  811. X.DS
  812. X\fBuplevel 1 {set x 43; d}
  813. X.DE
  814. Xwhere \fBd\fR is another Tcl procedure.  The \fBset\fR command will
  815. Xmodify the variable \fBx\fR in \fBb\fR's context, and \fBd\fR will execute
  816. Xat level 3, as if called from \fBb\fR.  If it in turn executes
  817. Xthe command
  818. X.DS
  819. X\fBuplevel {set x 42}
  820. X.DE
  821. Xthen the \fBset\fR command will modify the same variable \fBx\fR in \fBb\fR's
  822. Xcontext:  the procedure \fBc\fR does not appear to be on the call stack
  823. Xwhen \fBd\fR is executing.  The command ``\fBinfo level\fR'' may
  824. Xbe used to obtain the level of the current procedure.
  825. X\fBUplevel\fR makes it possible to implement new control
  826. Xconstructs as Tcl procedures (for example, \fBuplevel\fR could
  827. Xbe used to implement the \fBwhile\fR construct as a Tcl procedure).
  828. X.RE
  829. X.TP
  830. X\fBupvar \fR?\fIlevel\fR? \fIotherVar myVar \fR?\fIotherVar myVar \fR...?
  831. X.VS
  832. XThis command arranges for one or more local variables in the current
  833. Xprocedure to refer to variables in an enclosing procedure call or
  834. Xto global variables.
  835. X\fILevel\fR may have any of the forms permitted for the \fBuplevel\fR
  836. Xcommand, and may be omitted if the first letter of the first \fIotherVar\fR
  837. Xisn't \fB#\fR or a digit (it defaults to \fB1\fR).
  838. XFor each \fIotherVar\fR argument, \fBupvar\fR makes the variable
  839. Xby that name in the procedure frame given by \fIlevel\fR (or at
  840. Xglobal level, if \fIlevel\fR is \fB#0\fR) accessible
  841. Xin the current procedure by the name given in the corresponding
  842. X\fImyVar\fR argument.
  843. XThe variable named by \fIotherVar\fR need not exist at the time of the
  844. Xcall;  it will be created the first time \fImyVar\fR is referenced, just like
  845. Xan ordinary variable.
  846. X\fBUpvar\fR may only be invoked from within procedures.
  847. XNeither \fIotherVar\fR or \fImyVar\fR may refer to an element of an
  848. Xarray.
  849. X\fBUpvar\fR returns an empty string.
  850. X.RS
  851. X.LP
  852. XThe \fBupvar\fR command simplifies the implementation of call-by-name
  853. Xprocedure calling and also makes it easier to build new control constructs
  854. Xas Tcl procedures.
  855. XFor example, consider the following procedure:
  856. X.DS
  857. X.ta 1c 2c 3c
  858. X\fBproc add2 name {
  859. X    upvar $name x
  860. X    set x [expr $x+2]
  861. X}
  862. X.DE
  863. X\fBAdd2\fR is invoked with an argument giving the name of a variable,
  864. Xand it adds two to the value of that variable.
  865. XAlthough \fBadd2\fR could have been implemented using \fBuplevel\fR
  866. Xinstead of \fBupvar\fR, \fBupvar\fR makes it simpler for \fBadd2\fR
  867. Xto access the variable in the caller's procedure frame.
  868. X.VE
  869. X.RE
  870. X.TP
  871. X\fBwhile \fItest body
  872. X.VS
  873. XThe \fIwhile\fR command evaluates \fItest\fR as an expression
  874. X(in the same way that \fBexpr\fR evaluates its argument).
  875. XThe value of the expression must be numeric; if it is non-zero
  876. Xthen \fIbody\fR is executed by passing it to the Tcl interpreter.
  877. XOnce \fIbody\fR has been executed then \fItest\fR is evaluated
  878. Xagain, and the process repeats until eventually \fItest\fR
  879. Xevaluates to a zero numeric value.  \fBContinue\fR
  880. Xcommands may be executed inside \fIbody\fR to terminate the current
  881. Xiteration of the loop, and \fBbreak\fR
  882. Xcommands may be executed inside \fIbody\fR to cause immediate
  883. Xtermination of the \fBwhile\fR command.  The \fBwhile\fR command
  884. Xalways returns an empty string.
  885. X.VE
  886. X
  887. X.SH "BUILT-IN VARIABLES"
  888. X.PP
  889. XThe following global variables are created and managed automatically
  890. Xby the Tcl library.  Except where noted below, these variables should
  891. Xnormally be treated as read-only by application-specific code and by users.
  892. X.TP
  893. X\fBenv\fR
  894. X.br
  895. X.VS
  896. XThis variable is maintained by Tcl as an array
  897. Xwhose elements are the environment variables for the process.
  898. XReading an element will return the value of the corresponding
  899. Xenvironment variable.
  900. XSetting an element of the array will modify the corresponding
  901. Xenvironment variable or create a new one if it doesn't already
  902. Xexist.
  903. XUnsetting an element of \fBenv\fR will remove the corresponding
  904. Xenvironment variable.
  905. XChanges to the \fBenv\fR array will affect the environment
  906. Xpassed to children by commands like \fBexec\fR.
  907. XIf the entire \fBenv\fR array is unset then Tcl will stop
  908. Xmonitoring \fBenv\fR accesses and will not update environment
  909. Xvariables.
  910. X.TP
  911. X\fBerrorCode\fR
  912. XAfter an error has occurred, this variable will be set to hold
  913. Xadditional information about the error in a form that is easy
  914. Xto process with programs.
  915. X\fBerrorCode\fR consists of a Tcl list with one or more elements.
  916. XThe first element of the list identifies a general class of
  917. Xerrors, and determines the format of the rest of the list.
  918. XThe following formats for \fBerrorCode\fR are used by the
  919. XTcl core; individual applications may define additional formats.
  920. X.RS
  921. X.TP
  922. X\fBCHILDKILLED\fI pid sigName msg\fR
  923. XThis format is used when a child process has been killed because of
  924. Xa signal.  The second element of \fBerrorCode\fR will be the
  925. Xprocess's identifier (in decimal).
  926. XThe third element will be the symbolic name of the signal that caused
  927. Xthe process to terminate; it will be one of the names from the
  928. Xinclude file signal.h, such as \fBSIGPIPE\fR.
  929. XThe fourth element will be a short human-readable message
  930. Xdescribing the signal, such as ``write on pipe with no readers''
  931. Xfor \fBSIGPIPE\fR.
  932. X.TP
  933. X\fBCHILDSTATUS\fI pid code\fR
  934. XThis format is used when a child process has exited with a non-zero
  935. Xexit status.  The second element of \fBerrorCode\fR will be the
  936. Xprocess's identifier (in decimal) and the third element will be the exit
  937. Xcode returned by the process (also in decimal).
  938. X.TP
  939. X\fBCHILDSUSP\fI pid code\fR
  940. XThis format is used when a child process has been suspended because
  941. Xof a signal.
  942. XThe second element of \fBerrorCode\fR will be the process's identifier,
  943. Xin decimal.
  944. XThe third element will be the symbolic name of the signal that caused
  945. Xthe process to suspend; this will be one of the names from the
  946. Xinclude file signal.h, such as \fBSIGTTIN\fR.
  947. XThe fourth element will be a short human-readable message
  948. Xdescribing the signal, such as ``background tty read''
  949. Xfor \fBSIGTTIN\fR.
  950. X.TP
  951. X\fBNONE\fR
  952. X.br
  953. XThis format is used for errors where no additional information is
  954. Xavailable for an error besides the message returned with the
  955. Xerror.  In these cases \fBerrorCode\fR will consist of a list
  956. Xcontaining a single element whose contents are \fBNONE\fR.
  957. X.TP
  958. X\fBUNIX \fIerrName msg\fR
  959. XIf the first element of \fBerrorCode\fR is \fBUNIX\fR, then
  960. Xthe error occurred during a UNIX kernel call.
  961. XThe second element of the list will contain the symbolic name
  962. Xof the error that occurred, such as \fBENOENT\fR; this will
  963. Xbe one of the values defined in the include file errno.h.
  964. XThe third element of the list will be a human-readable
  965. Xmessage corresponding to \fIerrName\fR, such as
  966. X``no such file or directory'' for the \fBENOENT\fR case.
  967. X.PP
  968. XTo set \fBerrorCode\fR, applications should use library
  969. Xprocedures such as \fBTcl_SetErrorCode\fR and
  970. X\fBTcl_UnixError\fR, or they may invoke the \fBerror\fR command.
  971. XIf one of these methods hasn't been used, then the Tcl
  972. Xinterpreter will reset the variable to \fBNONE\fR after
  973. Xthe next error.
  974. X.RE
  975. X.VE
  976. X.TP
  977. X\fBerrorInfo\fR
  978. XAfter an error has occurred, this string will contain one or more lines
  979. Xidentifying the Tcl commands and procedures that were being executed
  980. Xwhen the most recent error occurred.
  981. XIts contents take the form of a stack trace showing the various
  982. Xnested Tcl commands that had been invoked at the time of the error.
  983. X
  984. X.SH AUTHOR
  985. XJohn Ousterhout, University of California at Berkeley (ouster@sprite.berkeley.edu)
  986. X.sp
  987. XMany people have contributed to Tcl in various ways, but the following
  988. Xpeople have made unusually large contributions:
  989. X.sp
  990. X.nf
  991. XBill Carpenter
  992. XPeter Da Silva
  993. XMark Diekhans
  994. XKarl Lehenbauer
  995. XMary Ann May-Pumphrey
  996. END_OF_FILE
  997. if test 41512 -ne `wc -c <'tcl6.1/doc/Tcl.man.3'`; then
  998.     echo shar: \"'tcl6.1/doc/Tcl.man.3'\" unpacked with wrong size!
  999. fi
  1000. # end of 'tcl6.1/doc/Tcl.man.3'
  1001. fi
  1002. echo shar: End of archive 32 \(of 33\).
  1003. cp /dev/null ark32isdone
  1004. MISSING=""
  1005. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ; do
  1006.     if test ! -f ark${I}isdone ; then
  1007.     MISSING="${MISSING} ${I}"
  1008.     fi
  1009. done
  1010. if test "${MISSING}" = "" ; then
  1011.     echo You have unpacked all 33 archives.
  1012.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1013. else
  1014.     echo You still need to unpack the following archives:
  1015.     echo "        " ${MISSING}
  1016. fi
  1017. ##  End of shell archive.
  1018. exit 0
  1019.  
  1020. exit 0 # Just in case...
  1021. -- 
  1022. Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
  1023. Sterling Software, IMD           UUCP:     uunet!sparky!kent
  1024. Phone:    (402) 291-8300         FAX:      (402) 291-4362
  1025. Please send comp.sources.misc-related mail to kent@uunet.uu.net.
  1026.